package com.yunlong.redis;

import com.yunlong.common.TokenInfo;

/**
 * @author ycSong
 */
public interface RedisRepository {

    /**
     * 保存手机号和验证码的键值对<phone, messageCode>
     * @param phone
     * @param messageCode 验证码
     */
    void saveMessageCode(String phone, String messageCode);
    /**
     * 保存邮箱和验证码的键值对<email, messageCode>
     * @param email
     * @param messageCode 验证码
     */
    void saveEmailMessageCode(String email, String messageCode);

    /**
     * 根据key：手机号 查询验证码
     * @param phone
     * @return
     */
    String selectMessageCodeByPhone(String phone);

    /**
     * 根据key：手机号 查询验证码
     * @param email
     * @return
     */
    String selectMessageCodeByEmail(String email);

    /**
     * 删除手机号和验证码的键值对
     * @param phone
     */
    void deleteMessageCode(String phone);

    /**
     * 认证
     * @param tokenInfo
     */
    void saveAccessToken(TokenInfo tokenInfo);

    /**
     * 登录认证
     * @param tokenInfo
     */
    void saveLoginAccessToken(TokenInfo tokenInfo);
    /**
     * 认证
     * @param tokenInfo
     */
    void saveManagerAccessToken(TokenInfo tokenInfo);

    /**
     * 登录认证
     * @param tokenInfo
     */
    void saveManagerLoginAccessToken(TokenInfo tokenInfo);

    /**
     * 查询认证,通过Token查Id
     * @param accessToken
     * @return
     */
    String selectAccessToken(String accessToken);
    /**
     * 查询认证,通过Token查Id
     * @param userId
     * @return
     */
    String selectUserToken(String userId);

    /**
     * 选取管理员token
     * @param managerId
     * "MANAGER_TOKEN:managerId"
     * @return
     */
    String selectManagerToken(String managerId);
    /**
     * 选取管理员token
     * @param accessToken
     * "MANAGER_TOKEN:managerId"
     * @return
     */
    String selectManagerId(String accessToken);
    /**
     * 删除管理员认证-通过token删除
     * @param accessToken
     * "MANAGER:accessToken"
     */
    void deleteManagerToken(String accessToken);
    /**
     * 删除管理员认证-通过ManagerID删除
     * @param managerId
     * "MANAGER_TOKEN:managerId"
     */
    void deleteLoginManagerToken(String managerId);

    /**
     * 查询登录认证
     * @param userId
     * @return
     */
    String selectLoginAccessToken(String userId);

    /**
     * 删除认证
     * @param accessToken
     */
    void deleteAccessToken(String accessToken);

    /**
     * 删除登录认证
     * @param userId
     */
    void deleteLoginAccessToken(String userId);


}
